<?php

/**
 * JobeetJob form.
 * Se generan mediante la tarea php symfony doctrine:build --forms
 * @package    jobeet
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class JobeetJobForm extends BaseJobeetJobForm {

    public function configure() {

        //Dia 12 creación de un formulario personalizado para el backend
        $this->removeFields();
        /*
         * Con unset desconceti aquellos campos que no debe ingresar el usuario (no se validarán)
         */
        // unset(
        //       $this['created_at'], $this['updated_at'], $this['expires_at'], $this['is_activated'], $this['token']
        //);

        /* Utilizo el framework de validaciones para que valide el email, si no lo hago lo validará como texto
         * ya que de esa manera está insertado en la bbdd, con sfValidatorAnd podemos pasar un conjunto de validadores
         * también se puede usar sfValidatorOr o ambos
         */
        $this->validatorSchema['email'] = new sfValidatorAnd(array(
                    $this->validatorSchema['email'],
                    new sfValidatorEmail(),
                ));
        /*
         * De esta manera restrinjo las opciones de seleccion del usuario para que no deba llenar los campos de forma 
         * manual - Día 10
         */
        /* $this->widgetSchema['type'] = new sfWidgetFormChoice(array(
          'choices' => Doctrine_Core::getTable('JobeetJob')->getTypes(),
          'expanded' => true,
          )); */
        //De esta forma aparece como lista desplegable
        $this->widgetSchema['type'] = new sfWidgetFormChoice(array(
                    'choices' => Doctrine_Core::getTable('JobeetJob')->getTypes(),
                    'expanded' => false,
                    'multiple' => false,
                ));

        //Modificar las etiquetas por defecto
        $this->widgetSchema->setLabels(array(
            'category_id' => 'Category',
            'is_public' => 'Public?',
            'how_to_apply' => 'How to apply?',
        ));

        //widget logo (upload)
        $this->widgetSchema['logo'] = new sfWidgetFormInputFile(array(
                    'label' => 'Company logo',
                ));
        //Validar el upload
        $this->validatorSchema['logo'] = new sfValidatorFile(array(
                    'required' => false,
                    'path' => sfConfig::get('sf_upload_dir') . '/jobs',
                    'mime_types' => 'web_images',
                ));

        //Se define un mensaje de ayuda para uno de los campos
        $this->widgetSchema->setHelp('is_public', 'Whether the job can also be published on affiliate websites or not.');

        //Modifico el formato del nombre de los campos de esta
        //manera el atributo name será job[nombre_columna]
        $this->widgetSchema->setNameFormat('job[%s]');
    }

    //Día 12 creación de un formulario personalizado para el backend
    protected function removeFields() {
        unset(
                $this['created_at'], $this['updated_at'], $this['expires_at'], $this['is_activated'], $this['token']
        );
    }

}
